dhcpd-pools.h: function attributes declarations
authorSami Kerola <kerolasa@iki.fi>
Sat, 19 Mar 2011 10:48:48 +0000 (11:48 +0100)
committerSami Kerola <kerolasa@iki.fi>
Sat, 19 Mar 2011 10:48:48 +0000 (11:48 +0100)
Advice compiler about functions to generate better optimization
and argument checks.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>

src/dhcpd-pools.c
src/dhcpd-pools.h
src/other.c

index b250f19..02669d2 100644 (file)
@@ -151,7 +151,6 @@ int main(int argc, char **argv)
                case 'v':
                        /* Print version */
                        print_version();
-                       return (EXIT_SUCCESS);
                case 'h':
                        /* Print help */
                        usage(EXIT_SUCCESS);
index 5982ba3..e1bce4d 100644 (file)
@@ -98,20 +98,34 @@ struct macaddr_t *macaddr;
 /* Function prototypes */
 int prepare_memory (void);
 int parse_leases (void);
-char * parse_config (int, char *, char *, char *, struct shared_network_t *);
-int nth_field (int n, char *dest, const char *src);
+char * parse_config (int, char *, char *, char *, struct shared_network_t *)
+       __attribute__((nonnull (2, 3, 4)));
+int nth_field (int n, char *dest, const char *src)
+       __attribute__((nonnull (2, 3)))
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+       __attribute__((__hot__))
+#endif
+       ;
 int prepare_data (void);
 int do_counting (void);
-void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges);
+void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges)
+       __attribute__((nonnull (1, 2)));
 /* General support functions */
-void *safe_malloc (const size_t size);
-char *safe_strdup(const char *str);
-void print_version (void);
-void usage (int status);
+void *safe_malloc (const size_t size)
+#if __GNUC__ >= 3
+       __attribute__ ((__malloc__))
+       #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+               __attribute__ ((__alloc_size__ ((1))))
+       #endif
+#endif
+       ;
+char *safe_strdup(const char *str) __attribute__((nonnull (1)));
+void print_version (void) __attribute__((noreturn));
+void usage (int status) __attribute__((noreturn));
 /* qsort required functions... */
 /* ...for ranges and... */
-int intcomp (const void *x, const void *y);
-int rangecomp (const void *r1, const void *r2);
+int intcomp (const void *x, const void *y) __attribute__((nonnull (1, 2)));
+int rangecomp (const void *r1, const void *r2) __attribute__((nonnull (1, 2)));
 /* sort function pointer and functions */
 int sort_name (void);
 unsigned long int (*returner) (struct range_t r);
@@ -123,8 +137,8 @@ unsigned long int ret_touched(struct range_t r);
 unsigned long int ret_tc(struct range_t r);
 unsigned long int ret_tcperc(struct range_t r);
 void field_selector(char c);
-int get_order(struct range_t *left, struct range_t *right);
-void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp);
+int get_order(struct range_t *left, struct range_t *right) __attribute__((nonnull (1, 2)));
+void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp) __attribute__((nonnull (1, 3)));
 /* output function pointer and functions */
 int (*output_analysis) (void);
 int output_txt (void);
index b5b9290..42f86ca 100644 (file)
@@ -109,6 +109,7 @@ void print_version(void)
                "This is free software: you are free to change and redistribute it.\n");
        fprintf(stdout,
                "There is NO WARRANTY, to the extent permitted by law.\n");
+        exit(EXIT_SUCCESS);
 }
 
 void usage(int status)